// CustomPalette.js

export default class CustomPalette {
  constructor(bpmnFactory, create, elementFactory, palette, translate, globalConnect) {
    this.bpmnFactory = bpmnFactory
    this.create = create
    this.elementFactory = elementFactory
    this.translate = translate
    this.globalConnect = globalConnect
    palette.registerProvider(this)
  }
  // 这个函数就是绘制palette的核心
  getPaletteEntries(element) {
    const { bpmnFactory, create, elementFactory, translate, globalConnect } = this
    function createTask(type) {
      return function (event) {
        const businessObject = bpmnFactory.create(type) // 其实这个也可以不要
        const shape = elementFactory.createShape({ type, businessObject, })
        create.start(event, shape)
      }
    }


    return {
      //左侧面板新增自定义
      'create.lindaidai-task': {
        group: 'model', // 分组名
        // className: 'bpmn-icon-task red', // 样式类名
        className: 'icon-custom lindaidai-task', // 样式类名
        title: translate('创建一个类型为create.cake的任务节点'),
        action: {
          // 操作
          dragstart: createTask('bpmn:Task'), // 开始拖拽时调用的事件
          click: createTask('bpmn:Task'), // 点击时调用的事件
        },
      },
      //左侧面板新增自定义
      'create.start-event': {
        group: 'event', // 分组名
        // className: 'bpmn-icon-task red', // 样式类名
        className: 'icon-custom lindaidai-task', // 样式类名
        title: translate('创建一个类型为create.cake的任务节点'),
        action: {
          // 操作
          dragstart: createTask('bpmn:StartEvent'), // 开始拖拽时调用的事件
          click: createTask('bpmn:StartEvent'), // 点击时调用的事件
        },
      },
      //修改默认左侧面板连接线
      'global-connect-tool': {
        group: 'tools',
        className: 'bpmn-icon-connection-multi',//默认
        title: '新增线',
        action: {
          click: function (event) {
            globalConnect.toggle(event)
          }
        }
      },
      //修改默认左侧面结束任务
      'create.end-event': {
        group: 'event',
        className: 'bpmn-icon-task red',//默认
        title: translate('Create EndEvent'),
        action: {
          dragstart: createTask('bpmn:EndEvent'), // 开始拖拽时调用的事件
          click: createTask('bpmn:EndEvent'), // 点击时调用的事件
        }
      }
    }
  }
}

CustomPalette.$inject = [
  'bpmnFactory',
  'create',
  'elementFactory',
  'palette',
  'translate',
  'globalConnect'
]
